ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
↳ QTRS
↳ Non-Overlap Check
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
AP2(ap2(map, f), xs) -> AP2(ap2(if, ap2(isEmpty, xs)), f)
AP2(ap2(ap2(if, null), f), xs) -> AP2(f, ap2(last, xs))
AP2(ap2(ap2(if, null), f), xs) -> AP2(ap2(if2, f), xs)
AP2(ap2(map, f), xs) -> AP2(if, ap2(isEmpty, xs))
AP2(ap2(ap2(if, null), f), xs) -> AP2(cons, ap2(f, ap2(last, xs)))
AP2(ap2(ap2(if, null), f), xs) -> AP2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
AP2(ap2(map, f), xs) -> AP2(isEmpty, xs)
AP2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(last, ap2(ap2(cons, y), ys))
AP2(ap2(ap2(if, null), f), xs) -> AP2(last, xs)
AP2(ap2(if2, f), xs) -> AP2(dropLast, xs)
AP2(ap2(ap2(if, null), f), xs) -> AP2(if2, f)
AP2(ap2(map, f), xs) -> AP2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
AP2(ap2(if2, f), xs) -> AP2(ap2(map, f), ap2(dropLast, xs))
AP2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(dropLast, ap2(ap2(cons, y), ys))
AP2(ap2(if2, f), xs) -> AP2(map, f)
AP2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
AP2(ap2(map, f), xs) -> AP2(ap2(if, ap2(isEmpty, xs)), f)
AP2(ap2(ap2(if, null), f), xs) -> AP2(f, ap2(last, xs))
AP2(ap2(ap2(if, null), f), xs) -> AP2(ap2(if2, f), xs)
AP2(ap2(map, f), xs) -> AP2(if, ap2(isEmpty, xs))
AP2(ap2(ap2(if, null), f), xs) -> AP2(cons, ap2(f, ap2(last, xs)))
AP2(ap2(ap2(if, null), f), xs) -> AP2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
AP2(ap2(map, f), xs) -> AP2(isEmpty, xs)
AP2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(last, ap2(ap2(cons, y), ys))
AP2(ap2(ap2(if, null), f), xs) -> AP2(last, xs)
AP2(ap2(if2, f), xs) -> AP2(dropLast, xs)
AP2(ap2(ap2(if, null), f), xs) -> AP2(if2, f)
AP2(ap2(map, f), xs) -> AP2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
AP2(ap2(if2, f), xs) -> AP2(ap2(map, f), ap2(dropLast, xs))
AP2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(dropLast, ap2(ap2(cons, y), ys))
AP2(ap2(if2, f), xs) -> AP2(map, f)
AP2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
AP2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(dropLast, ap2(ap2(cons, y), ys))
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
The following pairs can be strictly oriented and are deleted.
The remaining pairs can at least by weakly be oriented.
AP2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(dropLast, ap2(ap2(cons, y), ys))
dropLast > [AP1, ap2] > cons
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
AP2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(last, ap2(ap2(cons, y), ys))
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
The following pairs can be strictly oriented and are deleted.
The remaining pairs can at least by weakly be oriented.
AP2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> AP2(last, ap2(ap2(cons, y), ys))
last > [AP1, ap2] > cons
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
↳ QTRS
↳ Non-Overlap Check
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
AP2(ap2(ap2(if, null), f), xs) -> AP2(f, ap2(last, xs))
AP2(ap2(map, f), xs) -> AP2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
AP2(ap2(ap2(if, null), f), xs) -> AP2(ap2(if2, f), xs)
AP2(ap2(if2, f), xs) -> AP2(ap2(map, f), ap2(dropLast, xs))
ap2(ap2(map, f), xs) -> ap2(ap2(ap2(if, ap2(isEmpty, xs)), f), xs)
ap2(ap2(ap2(if, true), f), xs) -> null
ap2(ap2(ap2(if, null), f), xs) -> ap2(ap2(cons, ap2(f, ap2(last, xs))), ap2(ap2(if2, f), xs))
ap2(ap2(if2, f), xs) -> ap2(ap2(map, f), ap2(dropLast, xs))
ap2(isEmpty, null) -> true
ap2(isEmpty, ap2(ap2(cons, x), xs)) -> null
ap2(last, ap2(ap2(cons, x), null)) -> x
ap2(last, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(last, ap2(ap2(cons, y), ys))
ap2(dropLast, ap2(ap2(cons, x), null)) -> null
ap2(dropLast, ap2(ap2(cons, x), ap2(ap2(cons, y), ys))) -> ap2(ap2(cons, x), ap2(dropLast, ap2(ap2(cons, y), ys)))
ap2(ap2(map, x0), x1)
ap2(ap2(ap2(if, true), x0), x1)
ap2(ap2(ap2(if, null), x0), x1)
ap2(ap2(if2, x0), x1)
ap2(isEmpty, null)
ap2(isEmpty, ap2(ap2(cons, x0), x1))
ap2(last, ap2(ap2(cons, x0), null))
ap2(last, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))
ap2(dropLast, ap2(ap2(cons, x0), null))
ap2(dropLast, ap2(ap2(cons, x0), ap2(ap2(cons, x1), x2)))